let sym1 = Symbol();
let sym2 = Symbol();

console.log(sym1 === sym2); // false
console.log(Symbol('foo') === Symbol('foo')); // false
console.log(Symbol('foo') === Symbol('bar')); // false



let sym3 = Symbol('name');
console.info(sym3.toString()); // "Symbol(name)"


let sym4 = Symbol.for('name');
let sym5 = Symbol.for('name');
console.log('sym4 === sym5',sym4 === sym5); // true

/**
 * 因为 sym4 和 sym5 使用了相同的键 'name',
 * 所以它们实际上指向同一个 Symbol 值.当你把它们作为对象 person 的属性键时,后一个赋值会覆盖前一个赋值
 */
const person1 = {
    [sym4]: 'John',
    [sym5]: 30
};
console.log(person1); // { [Symbol(name)]: 30 }

let sym41 = Symbol('name1');
let sym51 = Symbol('name1');
const person2 = {
    [sym41]: 'John',
    [sym51]: 30
};
console.log(person2);  // { [Symbol(name1)]: 'John', [Symbol(name1)]: 30 }
